#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <stdlib.h>

//typedef struct Stu
//{
//	char name[20];
//	int a;
//	int c;
//}S;
//
//int main()
//{
//	FILE* pf = fopen("test.txt", "w+");
//	if (pf == NULL)
//	{
//		perror("fopen fail!");
//		exit(1);
//	}
//	S s1 = { "ZhangSan",20,20242049 };
//
//
//	fprintf(pf, "%s  %d  %d\n", s1.name,s1.a,s1.c);
//
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("test.txt", "w");
//	if (pf == NULL)
//	{
//		perror("fopen fail!");
//		exit(1);
//	}
//	fputs("10000", pf);
//
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("test.txt", "wb");
//	if (pf == NULL)
//	{
//		perror("fopen fail!");
//		exit(1);
//	}
//	int a = 10000;
//	fwrite(&a, 4, 1, pf);
//
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("test.txt", "a");
//	if (pf == NULL)
//	{
//		perror("fopen fail!");
//		exit(1);
//	}
//	char ch = fputc('c', pf);
//	printf("%c\n", ch);
//	ch = fputc('b', pf);
//	printf("%c\n", ch);
//	ch = fputc('\n', pf);
//	printf("%c\n", ch);
//	ch = fputc('a', pf);
//	printf("%c\n", ch);
//
//	int a = fclose(pf);
//	printf("%d\n", a);
//
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("test.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen fail!");
//		exit(1);
//	}
//	char ch = fgetc(pf);
//	printf("%c", ch);
//	ch = fgetc(pf);
//	printf("%c", ch);
//	ch = fgetc(pf);
//	printf("%c", ch);
//	ch = fgetc(pf);
//	printf("%c", ch);
//	ch = fgetc(pf);
//	printf("%c", ch); 
//	ch = fgetc(pf);
//	printf("%c", ch);
//	fclose(pf);
//
//	return 0;
//}

//int main()
//{
//	char arr[] = { 'a','b','c','\0','x','f','\0'};
//	FILE* pf = fopen("test.txt", "w");
//	if (pf == NULL)
//	{
//		perror("fopen fail!");
//		exit(1);
//	}
//
//	fputs("hello\n", pf);
//	fputs(arr, pf);
//
//	fclose(pf);
//
//	return 0;
//}

//int main()
//{
//	char arr[30] = { 0 };
//
//	FILE* pf = fopen("test.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen fail!");
//		exit(1);
//	}
//	fgets(arr,4,pf);
//
//	printf("%s", arr);
//
//	fclose(pf);
//
//	return 0;
//}

//typedef struct Stu
//{
//	char name[20];
//	int age;
//	double score;
//}S;
//
//int main()
//{
//	FILE* pf = fopen("test.txt", "w");
//	if (pf == NULL)
//	{
//		perror("fopen fail!");
//		exit(1);
//	}
//
//	S s1 = { "ZhangSan",20, 1.77 };
//
//	int a = fprintf(pf, "%s %d %.2lf", s1.name, s1.age, s1.score);
// 
// fclose(pf);
//
//	return 0;
//}

//typedef struct stu
//{
//	char name[20];
//	int age;
//	double score;
//}S;
//
//int main()
//{
//	FILE* pf = fopen("test.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen fail!");
//		exit(1);
//	}
//	S s1 = { 0 };
//	int a = fscanf(pf, "%s %d %lf", s1.name, &(s1.age), &(s1.score));
//	printf("a = %d\n", a);
//	printf("%s %d %.2lf", s1.name, s1.age, s1.score);
//
//	fclose(pf);
//
//	return 0;
//}

//int main()
//{
//	char arr[] = "he\0lo";
//
//	FILE* pf = fopen("test.txt", "wb");
//	if (pf == NULL)
//	{
//		perror("fopen fail!");
//		exit(1);
//	}
//	fwrite(arr, sizeof(char), sizeof(arr) / sizeof(arr[0]) - 1, pf);
//	fclose(pf);
//
//	return 0;
//}


//int main()
//{
//	char arr[20] = { 0 };
//	FILE* pf = fopen("test.txt", "rb");
//	if (pf == NULL)
//	{
//		perror("fopen fail!");
//		exit(1);
//	}
//
//	fread(arr, sizeof(char), sizeof(arr) / sizeof(arr[0]) - 4, pf);
//	printf("%s", arr);
//	fclose(pf);
//
//	return 0;
//}

//int main()
//{
//	char arr[20] = { 0 };
//	int a = 10;
//	int b = 20;
//	sprintf(arr, "%d and %d = %d\n", a, b, a + b);
//	printf("%s", arr);
//
//	return 0;
//}

//int main()
//{
//	char arr[] = "Rudolph is 12 years old";
//	char ar[20];
//	int i;
//	sscanf(arr, "%s %*s %d", ar, &i);
//
//	printf("%s", ar);
//	printf("%d", i);
//
//	return 0;
//}

int main()
{
	FILE* pf = fopen("test.txt", "r");
	if (pf == NULL)
	{
		perror("fopen fail!");
		exit(1);
	}
	fseek(pf, 2, SEEK_SET);
	int ch = fgetc(pf);
	printf("%c\n", ch);
	fseek(pf, -5, SEEK_END);
	ch = fgetc(pf);
	printf("%c\n", ch);
	fseek(pf, 1, SEEK_CUR);
	ch = fgetc(pf);
	printf("%c\n", ch);
	
	long int a = ftell(pf);
	printf("%ld\n", a);
	rewind(pf);
	a = ftell(pf);
	printf("%ld\n", a);
	ch = fgetc(pf);
	printf("%c\n", ch);

	fclose(pf);
	return 0;
}

